package main

import (
	"errors"
	"fmt"
)

//错误处理；使用defer、panic、recover进行错误处理
func main() {
	//错误错误处理
	test()
	fmt.Println("错误")

	//测试自定义处理，如果出现异常则打印错误信息并结束程序
	test2()
}

func test() {
	//defer+recover进行错误处理
	defer func() {
		//if err := recover();err != nil {  //也可以这样写
		err := recover() //recover（）内置函数，可以捕获异常
		if err != nil {  //说明发生异常
			fmt.Println("err=", err)
			//错误信息处理
			fmt.Println("发送邮件给admin@gulimall.com")
		}
	}() //加上（）表示函数调用
	num1 := 10
	num2 := 0
	res := num1 / num2
	fmt.Println(res)
}

func test2() {
	err := readFile("init.con")
	if err != nil {
		panic(err) //系统内置函数
	}
	fmt.Println("读取完毕。。。")
}

//自定义错误信息
func readFile(name string) (err error) {
	if name == "init.conf" {
		fmt.Println("读取中。。。")
		return nil
	} else {
		//返回一个自定义错误
		return errors.New("读取init.conf文件错误")
	}
}
